This invention relates to data transmission over packetized data transmission systems and methods and apparatus for increasing performance in bundled link systems.
The problem of transferring data from a source to a receiver recurs continuously in data processing systems. For example, such data transfer occurs both over networks on which clients and servers exchange data and over internal computer busses on which CPUs, memories and peripheral units exchange data.
Nodes coupled to a network typically communicate by exchanging messages which comprise discrete packets of data. These packets can be transported over the network with one of a variety of transport techniques. For example, asynchronous transfer mode (ATM) is a relatively new data transport technique in which the network transports and switches short, fixed-length cells. In applications utilizing ATM, data packets to be transported are first broken up into ATM cells, transmitted serially over a data link, and then reassembled at a destination. The header of an ATM cell contains the information used to transport the cell from one node to the next over a switched route which has been previously established by means of a separate signaling channel.
A similar cell-switching arrangement is used in some new internal bus technologies which overcome some of the shortcomings of with conventional shared bus technology. One of these newer bus technologies, called xe2x80x9cNext Generation I/Oxe2x80x9d (NGIO) architecture is a channel oriented, switched point-to-point serial link architecture. The NGIO architecture uses a plurality of xe2x80x9clinksxe2x80x9d or physical connections to connect each I/O controller to a switch. The switch can then connect the I/O controllers to a specialized DMA engine called a xe2x80x9cchannel adapterxe2x80x9d which transfers data between the I/O controllers and the memory. In order to provide extensibility, switches can also be connected to other switches by means of links.
In order to move data packets over a link, specialized hardware breaks each data packet into cells and the cells are transmitted serially from a data source to a data receiver over the link. At the data receiver, the cells are reassembled by other hardware into the complete data packet.
Even with this cell switching technology, data flow is still limited by the serial data rate of a link and there are instances where the throughput of a single link is insufficient. In the NGIO system, a proposed variation called the Multi Link Extension (MLX) permits several serial links can be dynamically associated into a set called a xe2x80x9cbundlexe2x80x9d which is used to transmit cells in parallel. The bundle exhibits overall increased bandwidth and can be used to match bandwidths between the I/O controllers and the point-to-point switch.
However, with such bundled arrangements, packets with certain sizes cause link packing problems which appear as lost link bandwidth. These problems occur because each packet must be partitioned into cells for transmission. Although each cell may have a varying length or size, conventionally, a packet is conventionally partitioned into cells by using the maximum cell size for all cells but the last cell and filling each cell with packet information. A cell with a less than maximum size is used to accommodate the remainder of the packet. In certain sized packets, for example, packets which have a size equal to the maximum size of a cell plus one byte, this packing arrangement results in a stream of two cells, one of which is full of data and a second which contains only one byte.
Therefore, there is a need to partition data packets in such a manner as to increase link bandwidth.
In accordance with one illustrative embodiment of the invention, a data packet is partitioned into a stream of cells of which the last two cells are partial cells. When the data has been partitioned so that less than the data required to fill two maximum size cells remains, the remaining data is divided into two cells where the cell size is selected so that each cell is larger than a predetermined minimum size. In a preferred embodiment, the remaining data is equally divided into partial size cells
In particular, in accordance with one embodiment, when there is less than two times the maximum size cell of data remaining to be partitioned in a packet and the remaining data is more than the maximum cell size, then the cell size used for the last two cells is the size of the remaining data divided by two.